/** 四国战机3选隐藏,测试发现对时间要求太高,同一参数也不一定次次成功,
    误差需要小于30毫秒!?太离谱了!没有绝对的把握,凑合用吧...
    
    投币后屏幕出现 "press start button" 时使用选隐藏宏

  By setycyas @2024-08-02
*/

/* 全局设定
*/ {
#Warn
#MaxThreadsPerHotkey 1
SetWorkingDir(A_ScriptDir)
#Include "..\Class\FaceDetector.2.ahk"
#Include "..\Class\CommonMacro.2.ahk"
#Include "..\Class\CommonUI.2.ahk"
#Include "..\Class\MyFuns.2.ahk"
#Include "..\Class\MyEmu.2.ahk"
#Include "..\Class\OrderMap.2.ahk"
;SendMode("Event")
SendMode("Input")
}

/* 制作四国战机3专用的宏类
*/ class Sonicwi3Macro extends CommonMacro {

  /* 构造函数,设定预设数据
  */
  __New(faceDetector, keys){
    super.__New(faceDetector, keys)
  }
  
  /* 新增的宏函数
  */
  ;四国战机选隐藏,在投币后使用.测试发现即使同样的参数也有时可以有时不行!
  ;对时间点要求太高了!!!
  _选红兔(key){
    static params := [2400,2100,2100,2100] ;等待参数组
    local i, v
    MyFuns.keyDown("1")
    this._down(2)
    for i, v in params {
      sleep(v)
      MyFuns.press("down", 60)
    }
    sleep(500)
    MyFuns.keyUp("1")
    this._up(2)
  }
  _选飞车(key){
    static params := [1730,2100,2100,2100] ;等待参数组
    local i, v
    MyFuns.keyDown("1")
    this._down(2)
    sleep(600)
    MyFuns.press("right", 60)
    for i, v in params {
      sleep(v)
      MyFuns.press("down", 60)
    }
    sleep(500)
    MyFuns.keyUp("1")
    this._up(2)
  }
  
  /* 重载宏接口
  */
  _setMacro(){
    this.macroMap := OrderMap()
    this.macroMap["连发A"] := this._连发A.bind(this)
    this.macroMap["游聚暂停"] := this._游聚暂停.bind(this)
    this.macroMap["选红兔"] := this._选红兔.bind(this)
    this.macroMap["选飞车"] := this._选飞车.bind(this)
    this.macroArr := this.macroMap.getKeys()
  }
}

/* 制作四国战机3专用UI
*/
class Sonicwi3UI extends CommonUI {

  DEFAULT_HOTKEYS := "~d"
  EXE_ARRAY := [MyEmu.WINKAWAKS, MyEmu.XZONE]

  /* 构造函数
  */
  __New(macro){
    super.__New("四国战机3", macro)
    this._preset := OrderMap([
      "默认", ["选红兔", "选飞车"]
    ])
  }

  /* 重写接口
  */

  /* 重写setup,更改可选的exe,读入预设
  */
  setup(){
    super.setup()
    this._myGui.opt("+AlwaysOnTop")
    this._myGui.show("x1100 y330")
    this.readPresetMenu("默认")
  }

}

/* 运行当前脚本
*/ if (A_ScriptName == "四国战机3选隐藏.2.ahk") {
  face := FaceDetector() ;方向检测对象
  macro := Sonicwi3Macro(face, ["w","e"]) ;宏对象,有界面时第二个参数可以随便写但长度不要小于2
  ;新建界面对象并显示
  ui := Sonicwi3UI(macro)
  ui.setup()
  ;更新组件内容
  ui._exeComboBox.Choose(MyEmu.WINKAWAKS)
  ui._gameKeyEdit.Text := "s,d" 
  ui._hotkeyEdit.Text := "n,m"
  ui._fpsEdit.Text := "20"
  ui._testEdit.Text := "1750,2100,2100,2100"
  ui.readPresetMenu("默认")
}
